package com.feimt.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.feimt.utils.BaseContent;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @author 宋孟林
 * @description mybatis-plus的元对象处理器，可以用来自动插入字段，实现元数据处理器后需要实现两个方法
 * 一个是触发更新的时候执行的方法，一个是触发插入，在需要插入的字段上添加好@TableField(fill = FieldFill.INSERT_UPDATE)
 * 的注解，其中插入和更新代表发生插入或更新的时候执行
 */
@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("开始插入数据");
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime", LocalDateTime.now());
        metaObject.setValue("createUser", BaseContent.getThreadLocal());
        metaObject.setValue("updateUser", BaseContent.getThreadLocal());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("开始更新数据");
        metaObject.setValue("updateTime", LocalDateTime.now());
        metaObject.setValue("updateUser", BaseContent.getThreadLocal());
    }
}
